#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<int,ll> pil;
typedef pair<ll,int> pli;
typedef pair<ll,ll> pll;
#define endl "\n";




void solve(){
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    ll ans=0;
    vector<vector<ll>>adj(4);
    for(int i=0;i<4;i++){
        int k;
        cin>>k;
        for(int j=0;j<k;j++){
            ll num;
            cin>>num;
            adj[i].push_back(num);
        }
    }
    sort(adj[0].begin(),adj[0].end());
    sort(adj[1].begin(),adj[1].end());
    sort(adj[2].begin(),adj[2].end());
    sort(adj[3].begin(),adj[3].end());

    while(a--){
        if(adj[0].size()!=0){
            ans+=adj[0].back();
            adj[0].pop_back();
        }
    }

    // cout<<ans<<endl;
    while(b--){
        ll temp1=0;
        if(adj[1].size()!=0){
            temp1+=adj[1].back();
        }

        ll temp2=0;
        int len=adj[0].size();
        if(len>=1){
            temp2+=adj[0][len-1];
        }
        if(len>=2){
            temp2+=adj[0][len-2];
        }

        if(temp1>=temp2){
            
            ans+=temp1;
            if(adj[1].size()!=0)adj[1].pop_back();
        }
        else {
            ans+=temp2;
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
        }

    }


    


    // cout<<ans<<endl;
    while(c){
        ll temp1=0;
        if(adj[2].size()!=0){
            temp1+=adj[2].back();
        }

        ll temp2=0;
        if(adj[1].size()!=0){
            temp2+=adj[1].back();
        }
        if(adj[0].size()!=0){
            temp2+=adj[0].back();
        }
        
        ll temp3=0;
        int len=adj[0].size();
        if(len>=1){
            temp3+=adj[0][len-1];
        }
        if(len>=2){
            temp3+=adj[0][len-2];
        }
        if(len>=3){
            temp3+=adj[0][len-3];
        }


        if(temp1==max({temp1,temp2,temp3})){
            ans+=temp1;
            if(adj[2].size()!=0)adj[2].pop_back();
        }
        else if(temp2==max({temp1,temp2,temp3})){
            if(adj[0].size()==0||adj[1].size()==0)break;
            ans+=temp2;
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[1].size()!=0)adj[1].pop_back();
        }
        else if(temp3==max({temp1,temp2,temp3})){
            if(adj[0].size()<3)break;
            ans+=temp3;
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
        }
        c++;
    }
    // cout<<ans<<endl;
    
    while(d--){
        ll temp1=0;
        if(adj[3].size()!=0){
            temp1+=adj[3].back();
        }

        //2 1*2
        ll temp2=0;
        int len1=adj[1].size();
        if(len1==1){
            temp2+=adj[1][len1-1];
        }
        else if(len1>=2){
            temp2+=adj[1][len1-1];
            temp2+=adj[1][len1-2];
        }

        //1 1*2 2 1*1
        ll temp3=0;
        int len2=adj[0].size();
        if(len1>=1){
            temp3+=adj[1].back();
        }
        if(len2==1){
            temp3+=adj[0][len2-1];
        }
        else if(len2>=2){
            temp3+=adj[0][len2-2];
            temp3+=adj[0][len2-1];
        }

        ll temp4=0;
        if(len2>=1){
            temp4+=adj[0][len2-1];
        }
        if(len2>=2){
            temp4+=adj[0][len2-2];
        }
        if(len2>=3){
            temp4+=adj[0][len2-3];
        }
        if(len2>=4){
            temp4+=adj[0][len2-4];
        }

        if(temp1==max({temp1,temp2,temp3,temp4})){
            ans+=temp1;
            if(adj[3].size()!=0)adj[3].pop_back();
        }
        else if(temp2==max({temp1,temp2,temp3,temp4})){
            ans+=temp2;
            if(adj[1].size()!=0)adj[1].pop_back();
            if(adj[1].size()!=0)adj[1].pop_back();
        }
        else if(temp3==max({temp1,temp2,temp3,temp4})){
            
            ans+=temp3;
            if(adj[1].size()!=0)adj[1].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
        }
        else if(temp4==max({temp1,temp2,temp3,temp4})){
            ans+=temp4;
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
        }
    }

while(c){
        ll temp1=0;
        if(adj[2].size()!=0){
            temp1+=adj[2].back();
        }

        ll temp2=0;
        if(adj[1].size()!=0){
            temp2+=adj[1].back();
        }
        if(adj[0].size()!=0){
            temp2+=adj[0].back();
        }
        
        ll temp3=0;
        int len=adj[0].size();
        if(len>=1){
            temp3+=adj[0][len-1];
        }
        if(len>=2){
            temp3+=adj[0][len-2];
        }
        if(len>=3){
            temp3+=adj[0][len-3];
        }


        if(temp1==max({temp1,temp2,temp3})){
            ans+=temp1;
            if(adj[2].size()!=0)adj[2].pop_back();
        }
        else if(temp2==max({temp1,temp2,temp3})){
            ans+=temp2;
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[1].size()!=0)adj[1].pop_back();
        }
        else if(temp3==max({temp1,temp2,temp3})){
            ans+=temp3;
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
            if(adj[0].size()!=0)adj[0].pop_back();
        }
        c++;
    }

    cout<<ans<<endl;
    // cout<<endl;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }

    return 0;
}